package com.easy.slurm.util;

import com.google.gson.Gson;
import com.google.gson.GsonBuilder;
import com.google.gson.reflect.TypeToken;
import org.apache.commons.lang3.StringUtils;

import java.util.ArrayList;
import java.util.List;
import java.util.Objects;

public final class GsonUtil {

    private final static Gson gson = new GsonBuilder()
            .disableHtmlEscaping().create();

    /**
     * <pre>
     * JSON字符串转换为List数组, 提供两种方式(主要解决调用的容易程度)
     * 1. TypeToken<List<T>> token 参数转换
     * 2. Class<T> cls 方式转换
     *
     * @param json
     * @return List<T>
     *
     * <pre>
     */
    public static <T> List<T> convertList(String json, TypeToken<List<T>> token) {
        if (StringUtils.isBlank(json)) {
            return new ArrayList<T>();
        }
        return gson.fromJson(json, token.getType());
    }

    /**
     *  Json格式转换, 由JSON字符串转化到制定类型T
     * @param json
     * @param cls
     * @param <T>
     * @return
     */
    public static <T> T convertObj(String json, Class<T> cls) {
        if (StringUtils.isBlank(json)) {
            return null;
        }
        return gson.fromJson(json, cls);
    }

    /**
     *  java对象转化JSON
     * @param obj
     * @return
     */
    public static String toJson(Object obj) {
        if (Objects.isNull(obj)) {
            return null;
        }
        return gson.toJson(obj);
    }
}
